package com.project.mapper;

import com.project.bean.UserBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;

/**
 * 用户mapper接口
 */
@Mapper
public interface IUserMapper {
    /**
     * 登陆，输入用户名、密码，得到登陆用户对象，同时包含该用户拥有的权限列表（联表）
     * @param userName 用户名
     * @param userPwd 用户密码
     * @return 登录用户对象，如果登录失败，返回null
     */
    @Select("SELECT pk_userId,f_userName,f_userPwd,f_name FROM (SELECT * FROM t_users JOIN t_u_a ON pk_userId = fk_userId) u \n" +
            "JOIN t_authority on pk_id= u.fk_id WHERE u.f_userName = #{userName} AND u.f_userPwd = #{userPwd}")
    @ResultMap("aMap")
    public UserBean login(@Param("userName") String userName,
                          @Param("userPwd") String userPwd);

    /**
     * 输入权限名称、用户ID，得到该用户是否有该权限
     * @param name 权限名称
     * @param userId 用户id
     * @return 用户对象
     */
    public UserBean findByItem(@Param("name") String name,
                               @Param("userId") Integer userId);
    /**
     * 添加用户，同时添加该用户的权限。
     * @param user 用户对象
     */
    public void add(UserBean user);

    /**
     * 添加用户
     * @param userId 用户id
     * @param idArray 用户权限数组
     */
    public void adds(@Param("userId") Integer userId,
                     @Param("idArray") Integer[] idArray);


    /**
     *按编号查询用户，同时查询该用户的权限。
     * @param userId 用户id
     * @return 用户对象
     */
    public UserBean findById(Integer userId);
    /**
     * 输入用户ID，和新的权限数组，完成该用户权限的修改。
     * @param userId 用户id
     * @param idArray 新权限id数组
     */
    public void update(@Param("userId") Integer userId,
                       @Param("idArray") Integer[] idArray);
}
